home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / compuserve-file-archive / 17 Arcade _ Action Games / LIFE.BIN (.txt) < prev    next >
Encoding:
Commodore BASIC  |  2019-04-13  |  1.5 KB  |  67 lines

  1. 5 PRINT "[147]"
  2. 10 INPUT "SIZE OF BOARD";W,H
  3. 15 CH=81:SC=1024:SW=40
  4. 20 DIM B(W,H),DX(H*W),DY(H*W),LX(H*W),LY(H*W)
  5. 30 GOSUB 4000:REM INPUT BOARD
  6. 40 GOSUB 2000:REM  DRAW BOARD
  7. 50 GOSUB 1000:REM FIND DEAD AND NEW CELLS
  8. 80 REM REMOVE DEAD CELLS FROM ARRAY
  9. 90 IF DP=0 THEN 125
  10. 100 FOR I=0 TO DP-1
  11. 110 B(DX(I),DY(I))=0
  12. 120 NEXT I
  13. 122 REM ADD NEW CELLS TO ARRAY
  14. 125 IF LP=0 THEN 160
  15. 130 FOR I=0 TO LP-1
  16. 140 B(LX(I),LY(I))=1
  17. 150 NEXT I
  18. 160 GOTO 40
  19. 1000 REM DETERMINE NUMBER OF NEIGHBORS FOR EACH CELL
  20. 1002 DP=0:LP=0
  21. 1010 FOR X=0TOW-1:FORY=0TOH-1
  22. 1020 N=0:T=0
  23. 1030 IF X<>0 THEN N=N+B(X-1,Y)
  24. 1040 IF X<>W-1 THEN N=N+B(X+1,Y)
  25. 1050 IF Y<>0 THEN N=N+B(X,Y-1)
  26. 1060 IF Y<>H-1 THEN N=N+B(X,Y+1)
  27. 1070 IF X<>0ANDY<>0 THEN N=N+B(X-1,Y-1)
  28. 1080 IFX<>0ANDY<>H-1THEN N=N+B(X-1,Y+1)
  29. 1090 IFX<>W-1ANDY<>0THEN N=N+B(X+1,Y-1)
  30. 1100 IFX<>W-1ANDY<>H-1THENN=N+B(X+1,Y+1)
  31. 1105 REM IF A POPULATED CELL, DETERMINE IT'S FATE
  32. 1110 IF B(X,Y)=1 THEN IF N>3OR N<2 THEN DX(DP)=X:DY(DP)=Y:DP=DP+1:GOTO 1150
  33. 1130 REM SEE IF AN EMPTY CELL CAN BE FILLED
  34. 1140 IF N=3 THEN LX(LP)=X:LY(LP)=Y:LP=LP+1
  35. 1150 NEXTY:NEXTX:RETURN
  36. 2000 REM DRAW BOARD ROUTINE
  37. 2010 FOR Y=0TOH-1:FORX=0TOW-1
  38. 2020 IF B(X,Y)=1 THEN C=CH:GOTO 2040
  39. 2030 C=32
  40. 2040 POKE SC+X+SW*Y,C
  41. 2050 NEXTX:NEXTY
  42. 2060 RETURN
  43. 4000 REM INPUT THE BOARD
  44. 4005 PRINT "[147]"
  45. 4008 GOSUB 5000
  46. 4010 FOR Y=0 TO H-1
  47. 4030 FOR X=0 TO W-1
  48. 4040 POKE SC+X+SW*Y,100
  49. 3840 GET A$:IF A$="" THEN 4050
  50. 4060 IF A$=" " THEN C=32:B(X,Y)=0:GOTO 4080
  51. 4070 C=CH:B(X,Y)=1
  52. 4080 POKE SC+X+SW*Y,C:NEXT X:NEXTY:RETURN
  53. 4090 GOTO 4010
  54. 5000 FOR X=0 TO W-1
  55. 5010 POKE SC+X+SW*H,64
  56. 5020 NEXT X
  57. 5030 FOR Y=0 TO H
  58. 5040 POKE SC+W+SW*Y,66
  59. 5050 NEXT Y
  60. 5060 POKE SC+W+SW*H,125
  61. 5100 PRINT ""
  62. 5110 FOR Y=0 TO H+2:PRINT:NEXT
  63. 5120 PRINT "PRESS ANY KEY TO MAKE A LIVE CELL."
  64. 5130 PRINT"PRESS THE SPACE BAR TO LEAVE A EMPTY"
  65. 5140 PRINT "CELL"
  66. 5199 RETURN
  67.